package com.ibangnuo.manage.dao.commission;

import com.ibangnuo.framework.domain.CommissionCommercialDay;
import com.ibangnuo.framework.domain.CommissionCommercialMonth;
import com.ibangnuo.framework.domain.CommissionDay;
import com.ibangnuo.framework.domain.CommissionMonth;
import com.ibangnuo.framework.domain.request.commission.CommissionCommercialDayRequest;
import com.ibangnuo.framework.domain.request.commission.CommissionRequest;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
import java.util.Map;

/**
 * @Author: wwy
 * @Date: 2020-03-12 17:23
 */
@Mapper
public interface CommissionMapper {
    List<CommissionMonth> findListByAgenId(Map<String,Object> map);

    List<CommissionDay> findListDayByAgentId(Map<String,Object> map);

    /**
     * 时间范围查询当前代理的直属商户的佣金
     * @param map
     * @return
     */
    Map<String,Object> countTimeScope(Map<String,Object> map);

    /**
     * 时间范围查询当前代理的直属商户的佣金记录（一天的记录）
     * @param commissionCommercialDayRequest
     * @return
     */
    List<CommissionCommercialDay> findByCommercialDay(CommissionCommercialDayRequest commissionCommercialDayRequest);

    /**
     * 查询代理商下的商户，包含自己的佣金日记录
     * @return
     */
    List<CommissionCommercialDay> findByCommercialDayAndAgentId(Map<String,Object> map);

    /**
     * 查询登录人的代理商下的佣金日记录
     * @param map
     * @return
     */
    List<CommissionDay> findByTimeAndParentAgentId(Map<String,Object> map);

    /**
     * 时间范围查询当前代理的直属商户的月佣金
     * @param map
     * @return
     */
    Map<String,Object> countTimeScopeMonth(Map<String,Object> map);

    /**
     * 查询登录人的代理商下的佣金月记录
     * @return
     */
    List<CommissionMonth> findByTimeAndParentAgentIdMonth(Map<String,Object> map);


    /**
     * 时间范围查询当前代理的直属商户的佣金记录（一月的记录）
     * @param commissionCommercialDayRequest
     * @return
     */
    List<CommissionCommercialMonth> findByCommercialMonth(CommissionCommercialDayRequest commissionCommercialDayRequest);

    /**
     * 查询代理商下的商户，包含自己的佣金月记录
     * @return
     */
    List<CommissionCommercialMonth> findByCommercialMonthAndAgentId(Map<String,Object> map);

    /**
     * 根据代理商id和时间查询月佣金
     * @param commissionRequest
     * @return
     */
    List<CommissionMonth> findByAgentIdAndTimeMonth(CommissionRequest commissionRequest);

    /**
     * 根据代理商id和时间查询日佣金
     * @param commissionRequest
     * @return
     */
    List<CommissionDay> findByAgentIdAndTimeDay(CommissionRequest commissionRequest);

    List<CommissionMonth> findListByAgenIdNotStatus(Map<String,Object> map);
}
